package vg.services.graph_view_manager.interfaces;

import vg.services.data_base_manager.data.graph.Graph;
import vg.services.graph_view_manager.interfaces.graph_comparison.AGraphComparisonView;
import vg.services.graph_view_manager.interfaces.graph_comparison.IGraphComparisonViewFactory;
import vg.services.graph_view_manager.interfaces.graph_view.AGraphView;
import vg.services.graph_view_manager.interfaces.graph_view.IGraphViewFactory;

public interface IGraphViewManager {
    /**
     * Sets current factory for graph view.
     */
    public boolean setGraphViewFactory(IGraphViewFactory factory);

    /**
     * Sets current factory for graph comparison view.
     */
    public boolean setGraphComparisonViewFactory(IGraphComparisonViewFactory factory);

    /**
     * Creates empty graph view.
     */
    public AGraphView newGraphView();

    /**
	 * Creates graph view.
	 */
	public AGraphView newGraphView(Graph g);
	
	/**
	 * Creates graph view.
	 */
	public AGraphView newGraphView(AGraphView graphView, Graph graph);
	
	/**
	 * Creates graph comparison view and compares input graphs.
	 * @param g1 - first graph
	 * @param g2 - second graph
	 */
	public AGraphComparisonView newGraphComparison(Graph g1, Graph g2);
}
